//
//  BTNetworking.h
//  
//
//  Created by baitongshiji on 16/12/23.
//  Copyright © 2016年 baitongshiji. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
typedef NS_ENUM(NSInteger, BTRequestType) {
    BTGet = 1,
    BTPost = 2
};

/*! 定义请求成功的 block */
typedef void( ^ BTResponseSuccess)(id response, NSString *stringData);
/*! 定义请求失败的 block */
typedef void( ^ BTResponseFail)(NSError *error);

/**
 *  请求任务
 */
typedef NSURLSessionTask BTURLSessionTask;


@interface BTNetworking : NSObject

/**
 统一请求接口
 
 @param type       请求方式
 @param urlString  请求路径
 @param params     请求参数
 @param success    成功回调
 @param fail       失败回调
 
 @return 返回的对象中可取消请求
 */
+ (BTURLSessionTask *)requestWithType:(BTRequestType)type
                            urlString:(NSString *)urlString
                               params:(NSDictionary *)params
                              success:(BTResponseSuccess)success
                                 fail:(BTResponseFail)fail;



/**
 上传图片

 @param params 参数
 @param url 接口
 @param image 图片
 @param imageFile 服务器对应的图片字段
 @param success 成功回调
 @param fail 失败回调
 */
+ (void)updateImageWithParams:(NSDictionary *)params url:(NSString *)url image:(UIImage *)image imageFile:(NSString *)imageFile success:(BTResponseSuccess)success fail:(BTResponseFail)fail;

/**
 取消所有网络请求
 */
+ (void)cancelAllRequest;


/**  
 根据url取消请求
    取消某个请求。如果是要取消某个请求，最好是引用接口所返回来的BTURLSessionTask对象，然后调用对象的cancel方法。如果不想引用对象，这里额外提供了一种方法来实现取消某个请求

 @param url 请求url
 */
+ (void)cancelRequestWithURL:(NSString *)url;




@end
